1 REM PROGRAM NAME JETSET
2 REM IFR FLITE SIMULATOR, BOEING 747
3 REM CREATED 6-28-81 BY GENE SZYMANSKI
4 REM REVISED 2-28-82
5 KEY OFF : DEF SEG=&H40 : POKE &H17,PEEK(&H17) OR 96
9 REM CONVERTED TO IBM PC BASIC ON 10-30-82
45 REM VOR STATION FREQS TABLE
46 DIM VF(15)
47 VF(0)=115.9 : VF(1)=113.8 : VF(2)=112.7
48 VF(3)=117.7 : VF(4)=117.8 : VF(5)=112.2
49 VF(6)=117.4 : VF(7)=115.5 : VF(8)=116.4
50 VF(9)=113.6 : VF(10)=116.9 : VF(11)=117!
51 VF(12)=112.3 : VF(13)=117.9 : VF(14)=115.7
52 VF(15)=112.8
62 REM ILS CONSTANTS FOR AIRPORTS
63 DIM VG(15,1)
64 VG(0,0)=238 : VG(0,1)=28
66 VG(2,0)=240 : VG(2,1)=30
69 VG(5,0)=90 : VG(5,1)=217
71 VG(7,0)=299 : VG(7,1)=164
72 VG(8,0)=166 : VG(8,1)=42
79 VG(15,0)=341 : VG(15,1)=75
100 REM VOR STATION COORDINATES TABLE
101 DIM VP(15,1)
102 VP(0,0)=40.633 : VP(0,1)=73.773
103 VP(1,0)=40.202 : VP(1,1)=74.495
104 VP(2,0)=42.358 : VP(2,1)=70.99301
105 VP(3,0)=41.282 : VP(3,1)=70.027
106 VP(4,0)=42.74301 : VP(4,1)=73.802
107 VP(5,0)=46.41201 : VP(5,1)=84.315
108 VP(6,0)=38.35 : VP(6,1)=81.77001
109 VP(7,0)=40.917 : VP(7,1)=77.99301
110 VP(8,0)=42.928 : VP(8,1)=78.64701
111 VP(9,0)=41.358 : VP(9,1)=82.162
112 VP(10,0)=42.96701 : VP(10,1)=83.74201
113 VP(11,0)=44.555 : VP(11,1)=88.19501
114 VP(12,0)=41.547 : VP(12,1)=88.318
115 VP(13,0)=39.495 : VP(13,1)=76.97801
116 VP(14,0)=42.048 : VP(14,1)=83.458
117 VP(15,0)=39.637 : VP(15,1)=75.303
155 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV
160 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN
165 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM
170 DATA ALTITUDE,FEET,CLOCK
10000 REM BEGIN TAKEOFF MODULE HERE
10020 CLS : CLEAR ,,1000: RANDOMIZE (VAL(MID$(TIME$,7,2))*10)
10025 KR=57.2958
10030 DIM XM(13),WM(13)
10031 DIM P$(31)
10035 DATA 37,35,32,30,27,25,22,20,17,15,12,10,7,5
10040 DATA 6,11,16,21,26,31,36,41,46,51,56,61,66,71
10041 FOR I=0 TO 28:READ P$(I):NEXT
10045 FOR I=0 TO 13:READ XM(I):NEXT
10050 FOR I=0 TO 13:READ WM(I):NEXT
10055 M$(1)="_":M$(2)="_":M$(3)="_"
10060 DIM XE(13),WE(13)
10065 K1=29:K2=23
10070 FOR I=0 TO 13
10075 XE(I)=K1:WE(I)=K2
10080 K1=K1-2:K2=K2+4
10085 NEXT I
10090 IO=40
10095 RN=RND(0)
10100 RS=1:IF RN<.5 THEN RS=-1
10105 W1=75:IF RS=-1 THEN W1=255
10110 W2=INT(20*RND(1)+1) :W3=RS*W2
10115 DIM XL(14),XR(14)
10120 J=31:K=49
10125 FOR I=0 TO 14
10130 XL(I)=J:XR(I)=K
10135 J=J-2:K=K+2
10140 NEXT I
10145 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV
10150 DATA PITCH," +"," -",DEG,FLAPS,UP,DOWN,WHEELS,UP,MID,DOWN
10155 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM
10160 DATA ALTITUDE,FEET,CLOCK,BRAKE,SET,REL
10170 FOR I=0 TO 31:READ P$(I):NEXT I
10175 DIM S$(25)
10180 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT
10185 FOR I=0 TO 9:F(I)=0:NEXT
10190 REM INIT VARIABLES FOR TAKEOFF MODE
10195 FU=200000!:FP=0:CC=75:ZZ=0:RC=0:AL=0
10200 MZ=77:TR=6:FL=2:FA=0:WH=13:IX=40:HY=9:BR=11:BK=11
10205 AB=0
10215 LOCATE 9,18:PRINT"UNITED 312    CLEARED AS FILED"
10217 PRINT:PRINT
10218 PRINT"        SURFACE WINDS VARIABLE, GUSTING TO 15."
10219 PRINT"        MINIMUM CEILING CONDITIONS ARE IN EFFECT."
10230 PRINT"        SKY CONDITIONS AT 20,000 SCATTERED."
10235 PRINT"                       AT 30,000 BROKEN."
10240 PRINT:PRINT
10245 PRINT"UPON TAKEOFF, MAINTAIN HEADING 075 TO 3000, THEN PROCEED AS FILED."
10248 PRINT:PRINT:PRINT"                STAND BY FOR TAKEOFF CLEARANCE"
10255 TQ=7000:GOSUB 11535
10260 CLS
10265 LOCATE 11,18:PRINT"UNITED 312":PRINT:PRINT
10270 PRINT"YOU ARE CLEARED FOR TAKEOFF AT 0800 HOURS"
10275 TQ=3000:GOSUB 11535
10280 CLS
10285 TIME$="07:59:00":CLS
10290 TV$=TIME$:GOSUB 11555 :TL=TD
10295 GOSUB 10330
10300 GOSUB 10410
10305 GOSUB 10480
10310 PRINT "";:GOSUB 10615
10315 K$=INKEY$:IF LEN(K$)=0 GOTO 10325
10320 GOSUB 10790
10325 GOTO 10945
10330 REM DISPLAY PANEL HEADERS ONLY
10335 LOCATE 1,4:PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20)
10340 LOCATE 11,60:PRINT P$(13);S$(3);P$(16);S$(2);P$(29)
10345 LOCATE 12,62:PRINT P$(14);S$(6);P$(14);S$(6);P$(30)
10350 LOCATE 14,62:PRINT P$(15);S$(4);P$(15);S$(4);P$(31)
10352 IF F(9)=1 GOTO 10405
10355 LOCATE 2,14:PRINT P$(6);S$(6);P$(10);S$(6)
10360 LOCATE 2,69:PRINT P$(28)
10365 LOCATE 3,2:PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23)
10370 LOCATE 4,23:PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26)
10375 LOCATE 5,1:PRINT P$(3)
10380 LOCATE 6,40:PRINT P$(22);S$(6);P$(25);S$(5);P$(27)
10385 LOCATE 7,1:PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7)
10390 LOCATE 8,14:PRINT P$(8)
10395 FOR Y=2 TO 8:LOCATE Y,13:PRINT CHR$(196):NEXT
10400 FOR Y=2 TO 4:LOCATE Y,22:PRINT CHR$(196):NEXT
10405 RETURN
10410 REM DISPLAY HORIZON LINE
10415 IF F(9)=0 GOTO 10430
10420 LOCATE 10,1:PRINT SPACE$(80);
10425 IF HY=20 GOTO 10440
10430 LOCATE (HY+1),1:PRINT STRING$(80,"_")
10435 RETURN
10440 OH=9:HY=10
10445 FOR I=HY TO 22
10450 LOCATE (OH+1),1:PRINT SPACE$(80);
10455 LOCATE (I+1),1:PRINT STRING$(80,"_");
10460 OH=I
10465 NEXT I
10470 LOCATE 24,(IO+1):PRINT" ";
10475 RETURN
10480 REM DISPLAY RUNWAY
10485 IF F(4)=1 GOTO 10525
10490 S=10:X=29
10495 FOR Y=11 TO 23
10500 LOCATE Y,(X+1):PRINT".";SPACE$(S);" ";SPACE$(S);".";
10505 X=X-2:S=S+2
10510 NEXT
10515 S$=S$(13)
10520 RETURN
10525 REM PRINTS RUNWAY GRAPHICS
10530 IF N>3 GOTO 10600
10535 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM);
10540 LOCATE (NY+1),(NX+1):PRINT MK$;
10545 OY=NY:OX=NX
10550 WM=FW
10555 RETURN
10560 REM ENTRY WHEN SHIP IN FINAL ZONE
10565 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM):IF F(9)=1 THEN RETURN
10570 FOR I=11 TO (NY-1+1)
10575 LOCATE I,(XE(J)+1):PRINT SPACE$(WE(J))
10580 NEXT I
10585 IF N>4 THEN RETURN
10590 LOCATE (NY+1),(NX+1):PRINT MK$;
10595 RETURN
10600 IF F(2)=1 GOTO 10560 ELSE F(2)=1
10605 FOR I=11 TO 14:LOCATE I,60:PRINT SPACE$(21):NEXT
10610 GOTO 10560
10615 REM DISPLAY INSTRUMENT READINGS
10620 YP=1:XP=0:F$="######":V1=FU:GOSUB 11600
10625 YP=1:XP=7:F$="###":V1=FP:GOSUB 11600
10630 YP=1:XP=39:V1=CC:GOSUB 11600
10635 YP=4:XP=39:V1=ZZ:GOSUB 11600
10640 YP=4:XP=46:F$="######":V1=RC:GOSUB 11600
10645 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 11600
10650 YP=5:XP=0:F$="###":V1=MZ:GOSUB 11600
10655 REM DISPLAY THRUST
10660 FOR I=2 TO 8
10665 LOCATE I,12:COLOR 0,7:PRINT" "
10670 NEXT
10675 LOCATE (TR+1),12:PRINT">";
10680 REM DISPLAY PITCH
10685 FOR I=2 TO 4:LOCATE I,21:COLOR 0,7:PRINT" ":NEXT
10690 LOCATE (FL+1),21:PRINT">"
10695 F$="+###"
10700 YP=5:XP=20:V1=FA:GOSUB 11600
10705 REM DISPLAY FLAPS
10710 IF F(2)=1 GOTO 10760
10715 FOR I=12 TO 14:LOCATE I,60:COLOR 0,7:PRINT" ":NEXT
10720 LOCATE (BR+1),60:PRINT">"
10725 REM WHEELS
10730 FOR I=12 TO 14:LOCATE I,68:COLOR 0,7:PRINT" ":NEXT
10735 LOCATE (WH+1),68:PRINT">"
10740 REM BRAKES
10745 FOR I=12 TO 14:LOCATE I,76:COLOR 0,7:PRINT" ":NEXT
10750 LOCATE (BK+1),76:PRINT">"
10755 COLOR 7,0
10760 REM DISPLAY RUNWAY ALIGNMENT INDEX
10765 IF F(9)=1 THEN RETURN
10770 LOCATE 24,(IO+1):PRINT" ";
10775 LOCATE 24,(IX+1):PRINT CHR$(24);
10780 IO=IX
10785 RETURN
10790 REM KEY POLL SUBRTN
10795 IF K$="F" THEN KK=1:GOTO 10820
10800 IF K$="," OR K$="." THEN KK=2:GOTO 10820
10805 IF K$="B" THEN KK=3:GOTO 10820
10810 IF K$="8" OR K$="2" THEN KK=4:GOTO 10820
10815 IF K$="L" THEN KK=5:GOTO 10820
10817 IF K$="W" THEN KK=6:GOTO 10820
10818 IF K$="S" THEN KK=7:GOTO 10820
10820 ON KK GOSUB 10830,10845,10865,10880,10925,10941,10826
10825 RETURN
10826 REM THRUST KEY
10827 IF F(7)=1 AND BR=11 THEN TR=4
10829 RETURN
10830 REM THRUST KEY (INCREASE)
10831 IF F(7)=1 THEN RETURN
10835 IF F(0)=0 THEN RETURN
10840 F(1)=1:TR=1:RETURN
10845 REM RUDDER KEYS
10846 IF F(7)=1 THEN RETURN
10850 IF ZZ<=50 THEN RETURN
10855 IF K$="," THEN CC=CC-1 ELSE CC=CC+1
10860 RETURN
10865 REM BRAKES
10870 IF F(0)=1 THEN RETURN
10875 F(0)=1:BK=13:RETURN
10880 REM PITCH
10881 IF F(7)=1 THEN RETURN
10885 IF ZZ<=50 THEN RETURN
10890 FD=-10:IF K$=CHR$(50) THEN FD=10
10895 FA=FA+FD
10900 IF FA>60 THEN FA=60
10905 IF FA<-60 THEN FA=-60
10910 IF FA>0 THEN FL=1:RETURN
10915 IF FA=0 THEN FL=2:RETURN
10920 FL=3:RETURN
10925 REM FLAPS
10926 IF F(7)=1 AND WH=11 THEN BR=11:RETURN
10930 IF F(3)=1 THEN RETURN
10935 IF F(3)=0 THEN F(3)=1:BR=13: RETURN
10940 RETURN
10941 REM WHEELS
10942 IF F(7)=1 THEN WH=11
10944 RETURN
10945 REM SITUATION UPDATE ROUTINE
10950 TV$=TIME$:GOSUB 11555:TJ=TD-TL:TL=TD:LOCATE 1,67 :PRINT TV$
10955 IF F(9)=1 GOTO 12000
10960 IF F(0)=1 GOTO 10970
10965 GOSUB 11130:GOTO 10310
10970 IF F(4)=1 GOTO 10990
10975 F(4)=1
10980 XX=0:YY=0
10985 TX=TD:V0=0:N=1:OY=23:OX=5:WM=71
10990 REM
10995 A=(118-18*TR)*.04028
11000 GOSUB 11190
11005 IF AL>0 GOTO 11060
11010 IF YY>10500 OR ABS(XX)>100 GOTO 11390
11015 IF FA<=0 GOTO 11100
11020 IF ZZ<150 GOTO 11385
11025 IF FA>10 GOTO 11385
11030 IF F(3)=0 GOTO 11100
11035 AL=25
11040 GOSUB 11130
11045 GOSUB 11150
11050 GOSUB 11300
11055 GOTO 10305
11060 F(9)=1
11065 GOSUB 11130
11070 GOSUB 11150
11075 GOSUB 11170
11080 FOR I=11 TO 23:LOCATE I,1:PRINT SPACE$(80);:NEXT
11085 HY=20
11090 GOSUB 10410
11095 GOTO 11115
11100 GOSUB 11130
11105 GOSUB 11300
11110 GOTO 10305
11115 REM NOW DO DEPARTURE PROCEDURES
11120 GOTO 10310
11130 REM UPDATE FUEL
11135 FU=FU-40*TJ
11140 FP=FU/3120
11145 RETURN
11150 REM UPDATE RATE OF CLIMB
11155 RC=ZZ*SIN(ABS(FA/57.3))*1.693*60
11160 IF FA<0 THEN RC=-1*RC
11165 RETURN
11170 REM UPDATE ALT
11175 AL=AL+TJ*RC/60
11180 IF AL<=0 THEN AL=0
11185 RETURN
11190 REM EQUATIONS OF MOTION
11195 T=TJ
11200 V=V0+A*T
11205 VB=(V+V0)/2:V0=V
11210 S=VB*T
11215 IF TD<(TX+18) GOTO 11235
11220 TX=TD
11225 WB=RS*INT(2*RND(1)+1)
11230 CC=CC+WB
11235 DA=(CC-75)/57.3
11240 DY=S*COS(ABS(DA))
11245 DX=S*SIN(ABS(DA))
11250 IF DA<0 THEN DX=-1*DX
11255 YY=YY+DY
11260 XX=XX+DX
11265 ZZ=V/1.69278
11270 IF ZZ>20 THEN ZZ=ZZ+WS
11275 IX=40+FIX(XX*7/20):IF IX>79 THEN IX=79
11280 IF IX<0 THEN IX=0
11285 ZP=FIX(YY-2500*(N-1))
11290 IF ZP>2500 THEN N=N+1:GOTO 11285
11295 RETURN
11300 REM VARIABLES FOR RUNWAY GRAPHICS
11305 MP=FIX(10+(13*ZP)/2500)
11310 IF N>3 GOTO 11350
11315 NY=MP
11320 J=NY-10
11325 NX=XM(J)
11330 FW=WM(J)
11335 S$=SPACE$(J)
11340 MK$=M$(N)+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"
11345 RETURN
11350 REM IN ZONE 4-MARKER IS RUNWAYS EDGE
11355 NY=MP
11360 J=NY-10
11365 NX=XE(J)
11370 IF N>4 THEN RETURN
11375 MK$=STRING$(WE(J),"_")
11380 RETURN
11385 AB=1:GOTO 11415
11390 AB=2:IF YY<10500 GOTO 11415
11395 FOR I=11 TO 23
11400 LOCATE I,1:PRINT SPACE$(80);
11405 NEXT I
11410 GOTO 11415
11415 REM ABORT
11420 FOR I=11 TO 23
11425 LOCATE I,1:COLOR 0,7:PRINT SPACE$(80);
11430 NEXT I
11435 LOCATE 11,30:PRINT"*** TAKEOFF FAILED***":PRINT:PRINT
11440 ON AB GOSUB 11455,11480
11445 LOCATE 20,35:COLOR 7,0:PRINT"END OF PROGRAM";
11450 END
11455 PRINT" YOU PULLED BACK ON THE STICK AT TOO SLOW A SPEED, OR YOU"
11460 PRINT" PULLED BACK THE STICK TOO FAR WHEN AT PROPER SPEED."
11465 PRINT" AS A RESULT THE TAIL END OF THE FUSELAGE SCRAPED THE RUNWAY"
11470 PRINT" AND THE AIRCRAFT SPUN OUT OF CONTROL."
11475 RETURN
11480 IF YY>10500 GOTO 11505
11485 PRINT" YOU FAILED TO STAY WITHIN THE RUNWAY BOUNDARIES."
11490 PRINT" AS A RESULT YOU VEERED OFF THE RUNWAY AND COLLIDED WITH"
11495 PRINT" THE RUNWAY LIGHTS."
11500 RETURN
11505 PRINT" YOU RAN OUT OF RUNWAY. AS A RESULT YOU ROLLED INTO THE "
11510 PRINT" MARSHLANDS LOCATED";FIX(YY)-10500;"FEET PAST THE END OF THE RUNWAY."
11515 IF F(3)=1 THEN RETURN
11520 PRINT:PRINT:PRINT" YOU FORGOT TO LOWER THE FLAPS."
11525 PRINT" AS A RESULT THE AIRCRAFT COULD NOT DEVELOP SUFFICIENT LIFT."
11530 RETURN
11535 REM TIME DELAY PAD
11540 FOR I=1 TO TQ
11545 NEXT I
11550 RETURN
11555 REM CONVERT RTC TO TIME OF DAY IN SECONDS ABSOLUTE
11560 J=7
11565 FOR I=0 TO 2
11570 TC$(I)=MID$(TV$,J,2)
11575 J=J-3
11580 TC(I)=VAL(TC$(I))
11585 TD=(3600*TC(2))+(60*TC(1))+TC(0)
11590 NEXT I
11595 RETURN
11600 REM PLOTS VARIABLE ON REVERSE BACKGROUND
11605 LOCATE (YP+1),(XP+1): COLOR 0,7 : PRINT "";
11610 PRINT USING F$;V1;
11615 PRINT "" : COLOR 7,0
11620 RETURN
12000 REM DEPARTURE ROUTINE
12010 IF F(7)=1 GOTO 12025 ELSE F(7)=1
12015 GOSUB 10340
12020 F(2)=0
12025 IF WH<>11 GOTO 12040 ELSE ZZ=ZZ+5
12030 IF BR<>11 GOTO 12040 ELSE ZZ=ZZ+5
12035 IF TR=4 AND AL>1800 THEN CHAIN"OJETCRUZ" ELSE GOTO 12090
12040 IF AL<1200 GOTO 12090
12042 LOCATE 13,1:PRINT"********** FLIGHT ABORTED **********"
12044 PRINT:PRINT
12046 PRINT"YOU FAILED TO PERFORM CRUCIAL TRIM MANEUVERS FOLLOWING LIFTOFF"
12048 PRINT"THE PROPER TRIM SEQUENCE,WHICH MUST BE COMPLETED BELOW 1200 FEET, IS AS FOLLOWS:"
12050 PRINT"   1-RAISE LANDING GEAR"
12052 PRINT"   2-RETRACT FLAPS"
12054 PRINT"   3-REDUCE THRUST"
12056 PRINT
12058 PRINT" ---------- END OF PROGRAM ---------- "
12060 END
12090 GOSUB 11130
12092 GOSUB 11150
12094 GOSUB 11170
12099 GOTO 10310
13000 REM END OF LISTING
